package com.skiplist;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**可以看到节点模型主要分为2个部分。

data部分包含具体的存储数据，这里为了不引入其他杂乱的问题，使用String作为key的类型，Integer作为value的类型。

links部分包含4个指针，分别是up，down，left，right，单从名字上就能够明白它们的作用。

最后一个需要解释的是，2个special的字符串变量，它们是用来处理一些特殊节点的初始化的，从上面的图中可以看到，跳跃表每一层链表中都有那么2个节点。具体的初始化方法如下：

SkipListEntry x = new SkipListEntry(SkipListEntry.negInf, null);
SkipListEntry y = new SkipListEntry(SkipListEntry.posInf, null);
 * @author DELL
 *
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
public class SkipListEntry {

	// data
    public String key;
    public Integer value;

    // links
    public SkipListEntry up;
    public SkipListEntry down;
    public SkipListEntry left;
    public SkipListEntry right;

    // special
    public static final String negInf = "-oo";
    public static final String posInf = "+oo";

    // constructor
    public SkipListEntry(String key, Integer value) {
        this.key = key;
        this.value = value;
    }

}
